// 防抖
// 1. 从装饰着入手 输入fn  返回一个假fn
// 2. 从防抖功能入手 记录timer 利用闭包
// 3. 高仿fn (模仿参数, 模仿运行, 模仿this)
export function debounce (fn, delay) {
  let timer = null;

  return function (...args) {
    // 重置timer
    timer && clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay);
  };
}
